//内部类


// 类中的成员变量 可以不初始化

// 而局部方法中的局部变量，必须初始化

//（其实也就是全局变量可以不用初始化，而局部变量必须初始化）
class OuterClass{
    public int data;
    private int data1;
    public static int data2;

    public void Test1(){
        int data100 = 1000;
        System.out.println("OuterClass::Test1()");
        InnerClass innerClass = new InnerClass();
        //外部类调用内部类成员
        //需要创建对象，通过对象引用去调用成员
        System.out.println(innerClass.data3);
        System.out.println(innerClass.data4);
        //静态成员需要通过 类名调用
        System.out.println(InnerClass.data5);
    }

    //实例内部类
    class InnerClass {
        public int data3;
        private int data4;
        public static int data5;

        public void Test2() {
            System.out.println("InnerClass::Test2(");
            //内部类调用外部类的成员
            System.out.println(data3);
            System.out.println(data4);
            System.out.println(data5);
            System.out.println("========");
            //内部类调用自己的成员
            System.out.println(data);
            System.out.println(data1);
            System.out.println(data2);
        }
    }

}

public class Test {
    public static void main(String[] args) {
        OuterClass outerClass = new OuterClass();
        OuterClass.InnerClass innerClass = outerClass.new InnerClass();
        outerClass.Test1();
        innerClass.Test2();

    }
}
